// 购物车模块状态管理
const state = {
  // 购物车商品列表
  items: [],
  // 购物车是否展开
  isOpen: false
}

const mutations = {
  // 添加商品到购物车
  ADD_TO_CART(state, product) {
    const existingItem = state.items.find(item => item.id === product.id)
    
    if (existingItem) {
      // 如果商品已存在，增加数量
      existingItem.quantity += product.quantity || 1
    } else {
      // 如果商品不存在，添加新商品
      state.items.push({
        ...product,
        quantity: product.quantity || 1
      })
    }
    
    // 保存到本地存储
    localStorage.setItem('cart', JSON.stringify(state.items))
  },
  
  // 从购物车移除商品
  REMOVE_FROM_CART(state, productId) {
    state.items = state.items.filter(item => item.id !== productId)
    localStorage.setItem('cart', JSON.stringify(state.items))
  },
  
  // 更新商品数量
  UPDATE_QUANTITY(state, { productId, quantity }) {
    const item = state.items.find(item => item.id === productId)
    if (item) {
      if (quantity <= 0) {
        // 如果数量为0或负数，移除商品
        state.items = state.items.filter(item => item.id !== productId)
      } else {
        item.quantity = quantity
      }
      localStorage.setItem('cart', JSON.stringify(state.items))
    }
  },
  
  // 清空购物车
  CLEAR_CART(state) {
    state.items = []
    localStorage.removeItem('cart')
  },
  
  // 设置购物车商品
  SET_CART_ITEMS(state, items) {
    state.items = items
  },
  
  // 切换购物车展开状态
  TOGGLE_CART(state) {
    state.isOpen = !state.isOpen
  },
  
  // 设置购物车展开状态
  SET_CART_OPEN(state, isOpen) {
    state.isOpen = isOpen
  }
}

const actions = {
  // 添加商品到购物车
  addToCart({ commit }, product) {
    commit('ADD_TO_CART', product)
  },
  
  // 从购物车移除商品
  removeFromCart({ commit }, productId) {
    commit('REMOVE_FROM_CART', productId)
  },
  
  // 更新商品数量
  updateQuantity({ commit }, { productId, quantity }) {
    commit('UPDATE_QUANTITY', { productId, quantity })
  },
  
  // 清空购物车
  clearCart({ commit }) {
    commit('CLEAR_CART')
  },
  
  // 从本地存储加载购物车数据
  loadCartFromStorage({ commit }) {
    try {
      const cartData = localStorage.getItem('cart')
      if (cartData) {
        const items = JSON.parse(cartData)
        commit('SET_CART_ITEMS', items)
      }
    } catch (error) {
      console.error('加载购物车数据失败:', error)
      // 如果数据损坏，清空购物车
      commit('CLEAR_CART')
    }
  },
  
  // 切换购物车显示状态
  toggleCart({ commit }) {
    commit('TOGGLE_CART')
  },
  
  // 设置购物车显示状态
  setCartOpen({ commit }, isOpen) {
    commit('SET_CART_OPEN', isOpen)
  }
}

const getters = {
  // 获取购物车商品列表
  cartItems: state => state.items,
  
  // 获取购物车商品总数
  cartItemCount: state => {
    return state.items.reduce((total, item) => total + item.quantity, 0)
  },
  
  // 获取购物车总价
  cartTotal: state => {
    return state.items.reduce((total, item) => {
      return total + (item.price * item.quantity)
    }, 0)
  },
  
  // 获取购物车是否为空
  isCartEmpty: state => {
    return state.items.length === 0
  },
  
  // 获取购物车是否展开
  isCartOpen: state => state.isOpen,
  
  // 检查商品是否在购物车中
  isInCart: (state) => (productId) => {
    return state.items.some(item => item.id === productId)
  },
  
  // 获取商品在购物车中的数量
  getItemQuantity: (state) => (productId) => {
    const item = state.items.find(item => item.id === productId)
    return item ? item.quantity : 0
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions,
  getters
} 